// Ajax的Axios的封装

/**
 * axios 封装
 * 1. /api ==> 配置公共请求路径  baseURL
 * 2. 要将响应回来的数据，直接能够获取到响应体  ==> 响应拦截器
 * 
 */
import axios from 'axios'
// 方式一：只能配置一个
// axios.defaults.baseURL = 'http://localhost:3000'
// 方式二：
/**
 * axios.create 作用创建一个一模一样自己。
 * 除了，没有cancelToken, 没有 axios.all 方法之外，其他功能跟axios一模一样
 * 优势：可以配置多个基础路径 
 *
 */
const request = axios.create({
    baseURL:'http://localhost:3000'
})

// axios的请求拦截器，在里面处理token的提交
request.interceptors.request.use(config=>{
    // 尝试从本地获取客户端获取token信息，若没有是undefined
    let token = localStorage.getItem('token') ? localStorage.getItem('token') : undefined
    // 如果本地存储中有token，那么就通过header携带
    if(token){
        config.headers.token = token
    }
    return config;
})


/**
 * 处理响应体被axios对象包裹的问题。{data:响应体数据}
 * 配置响应拦截器
 */
request.interceptors.response.use(response=>response.data)

// 导出
export default request